<?php

class Consultas extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->titulo = 'Consulta Informativa';
        $this->redirect = 'consultas';
        $this->datosusuario = $this->authentication->getDataLogged();
        $this->load->model('m_consulta', 'consulta');
        $this->load->model('m_consulta_x_asesore', 'consulta_x_asesore');
        $this->load->model('m_asesor', 'asesor');
        $this->load->model('m_medico', 'medico');
        $this->load->model('m_turno', 'turno');
        $this->load->model('m_asesor', 'asesores');
        $this->load->model('m_tipo_consulta', 'tipo_consulta');
        $this->load->model('m_turno', 'cita');
    }

    function index() {

        $data = array(
            'titulo' => 'Próximas consultas para cargar resultados',
            'datosusuario' => $this->datosusuario,
            'turnos' => $this->turno->getProximasCitas(),
            'seleccionar' => 'consultas',
        );
        $this->load->view('templates/header', $data);
        $this->load->view('templates/topbar');
        $this->load->view('consulta/leftbar');
        $this->load->view('consulta/index');
        $this->load->view('templates/footer');
    }

    /**
     * Listado de los ultomos pagos.
     *
     * @return void
     */
    function ultimas_consultas() {
        if (isset($_POST['submit'])) {
            $busqueda['fechaDesde'] = $_POST['fechaDesde'];
            $busqueda['fechaHasta'] = $_POST['fechaHasta'];
        } else {
            $busqueda['fechaDesde'] = date('d/m/Y', strtotime('-1 month'));
            $busqueda['fechaHasta'] = date('d/m/Y');
        }

        $consultas_array = $this->consulta->getPagosXFechas($busqueda['fechaDesde'], $busqueda['fechaHasta']);
        $consultas = array();
        $i = 0;
        foreach ($consultas_array as $value) {
            $consultas[$i] = $value;
            $consultas[$i]->asesores = $this->asesores->getAsesoresPorConsultaId($value->id);
            $i++;
        }

        $data = array(
            'titulo' => 'Listado de las últimas consultas',
            'datosusuario' => $this->datosusuario,
            'busqueda' => $busqueda,
            'consultas' => $consultas,
            'seleccionar' => 'consultas',
        );

        $this->load->view('templates/header', $data);
        $this->load->view('templates/topbar');
        $this->load->view('consulta/leftbar');
        $this->load->view('consulta/ultimas_consultas');
        $this->load->view('templates/footer');
    }

    function resulconsultado($matricula = '', $citaId = '') {
        if ($matricula == '')
            redirect('consultas/');

        $this->medico->get($matricula);

        $this->form_validation->set_rules($this->consulta->getValidacion());
        if ($this->form_validation->run() === FALSE) {
            if (isset($_POST['submit'])) {
                set_message(array('3' => validation_errors()));
                $consulta = $_POST;
            } else {
                $consulta = $this->consulta->valoresPorDefecto();
            }

            $tipo_tipo_consulta_array = $this->tipo_consulta->getList();

            $tipo_tipo_consulta[''] = 'Seleccione un Tipo de Consulta';

            foreach ($tipo_tipo_consulta_array as $value) {
                $tipo_tipo_consulta[$value->id] = $value->nombre;
            }

            $data = array(
                'titulo' => 'Reunión con ',
                'datosusuario' => $this->datosusuario,
                'turnos' => $this->turno->getProximasCitas(),
                'asesores' => $this->asesores->getList(array('estado' => 1)),
                'tipo_consulta' => $tipo_tipo_consulta,
                'consulta' => $consulta,
                'medico' => $this->medico,
                'seleccionar' => 'consultas',
            );

            $this->load->view('templates/header', $data);
            $this->load->view('templates/topbar');
            $this->load->view('consulta/leftbar');
            $this->load->view('consulta/form');
            $this->load->view('templates/footer');
        } else {
            $this->cita->get($citaId);
            $this->cita->asistio = 1;
            $this->cita->save();

            $this->consulta->setAttributes($this->input);
            $this->consulta->fecha = gmdate('Y-m-d');
            $this->consulta->fechaActoMedico = normal_to_database_date($this->consulta->fechaActoMedico);
            $this->consulta->id = null;
            $this->consulta->save();

            $asesores = $this->input->post('asesor');

            foreach ($asesores as $asesorId) {
                $this->consulta_x_asesore->id = null;
                $this->consulta_x_asesore->asesorId = $asesorId;
                $this->consulta_x_asesore->consultaInformativaId = $this->consulta->id;
                $this->consulta_x_asesore->save();
            }

            set_message(array('1' => 'Se ha registrado el resultado de la consulta.'));

            redirect('consultas/');
        }
    }

    function editar($id) {
        if ($id == '')
            redirect('consultas/');

        $this->consulta->get($id);
        $this->medico->get($this->consulta->matricula);

        $this->form_validation->set_rules($this->consulta->getValidacion());
        if ($this->form_validation->run() === FALSE) {
            if (isset($_POST['submit'])) {
                set_message(array('3' => validation_errors()));
                $consulta = $_POST;
            } else {
                $consulta = $this->consulta->doArray();
                $asesores_array = $this->asesor->getAsesoresPorConsultaId($this->consulta->id);
                $asesores = array();
                foreach ($asesores_array as $asesor) {
                    $asesores[] = $asesor->id;
                }
                $consulta['asesor'] = $asesores;
            }

            $tipo_tipo_consulta_array = $this->tipo_consulta->getList();

            $tipo_tipo_consulta[''] = 'Seleccione un Tipo de Consulta';

            foreach ($tipo_tipo_consulta_array as $value) {
                $tipo_tipo_consulta[$value->id] = $value->nombre;
            }

            $data = array(
                'titulo' => 'Reunión con ',
                'datosusuario' => $this->datosusuario,
                'turnos' => $this->turno->getProximasCitas(),
                'asesores' => $this->asesores->getList(),
                'tipo_consulta' => $tipo_tipo_consulta,
                'consulta' => $consulta,
                'medico' => $this->medico,
                'seleccionar' => 'consultas',
            );

            $this->load->view('templates/header', $data);
            $this->load->view('templates/topbar');
            $this->load->view('consulta/leftbar');
            $this->load->view('consulta/form');
            $this->load->view('templates/footer');
        } else {
            $this->consulta->setAttributes($this->input);
            $this->consulta->fecha = gmdate('Y-m-d');
            $this->consulta->fechaActoMedico = normal_to_database_date($this->consulta->fechaActoMedico);
            $this->consulta->id = $id;
            $this->consulta->save();
            
            $consultas_x_asesores = $this->consulta_x_asesore->getList(array('consultaInformativaId' => $this->consulta->id));
            foreach ($consultas_x_asesores as $consulta_x_asesore) {
                $this->consulta_x_asesore->get($consulta_x_asesore->id);
                $this->consulta_x_asesore->delete();
            }

            $asesores = $this->input->post('asesor');

            foreach ($asesores as $asesorId) {
                $this->consulta_x_asesore->id = null;
                $this->consulta_x_asesore->asesorId = $asesorId;
                $this->consulta_x_asesore->consultaInformativaId = $this->consulta->id;
                $this->consulta_x_asesore->save();
            }

            set_message(array('1' => 'Se ha registrado el resultado de la consulta.'));

            redirect('consultas/');
        }
    }

}